
#ifdef WIN32
#include <curses.h>
#else
#include <ncurses.h>
#endif

#include <stdio.h>

#include <stdbool.h>
#include "Jeu.h"


/*temporaire */
#include "Zone.h"


/* Pas mis à jour depuis longtemps... */
void ncuAff(WINDOW* window, const Jeu* p_jeu)
{
	int x,y;


	const Zone* p_zone = carGetConstPZoneActive(&p_jeu->carte);
	const Link* p_link = &(p_jeu->link);

	wclear(window);


	for(x=0 ; x<zonGetDimension(p_zone) ; x++)
	{
		for(y=0 ; y<zonGetDimension(p_zone) ; y++)
		{
			mvwprintw(window, y, x, "%c", bloCaractereDepuisBloc( zonGetBlocXY(p_zone, x, y)) );
		}
	}

	x = linGetPosX(p_link);
	y = linGetPosY(p_link);
	mvwprintw( window, y, x, "O");

	wmove( window, y, x);

}


void ncuBoucle(Jeu* p_jeu)
{
	WINDOW* window;
	int touche;
	int continue_boucle;

	initscr();		/* passe l'écran texte en mode NCurses */
	clear();		/* efface l'écran */
	noecho();  	/* Lorsqu'une touche est préssée au clavier, elle n'apparait pasa à l'écran */
	cbreak();		/* un caractère est directement affiché, il ne passe pas dans un buffer */

	/* Creation d'une nouvelle fenetre en mode texte */
	/* => fenetre de dimension et position ( WIDTH, HEIGHT, STARTX,STARTY) */
	window = newwin(zonGetDimension(p_jeu->carte.p_zone_active),zonGetDimension(p_jeu->carte.p_zone_active), 2, 0);
	keypad(window, TRUE);		/* pour que les flèches soient traitées (il faut le faire après création de la fenêtre) */

	halfdelay( 10 );
	/* notimeout(win,true); */
	/* wtimeout( win, 500 ); */
	/* nodelay(win,true); */


	continue_boucle = true;
	do
	{
		ncuAff(window, p_jeu);

		touche = wgetch(window);
		/* jeuActionClavier( jeu, 'd'); */
		switch(touche)
		{
			case KEY_UP:
				jeuActionClavier( p_jeu, 'h');
				break;
			case KEY_DOWN:
				jeuActionClavier( p_jeu, 'b');
				break;
			case KEY_LEFT:
				jeuActionClavier( p_jeu, 'g');
				break;
			case KEY_RIGHT:
				jeuActionClavier( p_jeu, 'd');
				break;

			/* case f/t/g >> attaque */

			case 27 : /* ECHAP */
				continue_boucle = false;
				break;
		}

		jeuVerifieEvenements(p_jeu);

	} while (continue_boucle == true);

	endwin();
}
